package mycode;

import java.sql.SQLOutput;
import java.util.Scanner;

public class code01 {
//    public static void main1(String[] args) {
        //根据年龄，来打印出当前年龄的人是少年（低于18岁），青年（19-28），中年（29-55），老年（56岁以上）
//        Scanner scanner = new Scanner(System.in);
//        System.out.print("请输入数字：");
//        int age = scanner.nextInt();
//
//        if(age<18) {
//            System.out.println("少年");
//        }else if (age<28) {
//            System.out.println("青年");
//        } else if (age<55) {
//            System.out.println("中年");
//        }else {
//            System.out.println("老年");
//        }



//    }

//    public static void main2(String[] args) {
//        //判断一个数是否是素数
//        //方法一：
//        Scanner scanner = new Scanner(System.in);
//        System.out.print("请输入数字：");
//        int num = scanner.nextInt();
//        boolean flag = true;
//
//        if (num == 1) {
//            flag = false;
//        }else {
//            for (int i = 2; i <num ; i++) {
//                if (num%i == 0) {
//                    flag = false;
//                    break;
//                }
//            }
//        }
//        if (flag) {
//            System.out.println("num是素数");
//        }else {
//            System.out.println("num不是素数");
//        }

        //方法二：
//        Scanner scanner = new Scanner(System.in);
//        System.out.print("请输入数字：");
//        int num = scanner.nextInt();
//        boolean flag = true;
//        if(num==1) {
//            flag = false;
//        }else {
//            for (int i = 2; i <Math.sqrt(num) ; i++) {
//                if (num%i == 0) {
//                    flag = false;
//                    break;
//                }
//            }
//        }
//
//        if (flag) {
//            System.out.println("num是素数");
//        }else {
//            System.out.println("num不是素数");
//        }
//    }

//    //打印1-100间所有的素数
//    public static void main3(String[] args) {
//
//        for (int i = 1; i <100 ; i++) {
//            boolean flag = true;
//            if (i == 1) {
//                flag = false;
//            }else {
//                for (int j = 2; j <i ; j++) {
//                    if (i%j == 0) {
//                        flag = false;
//                        break;
//                    }
//                }
//            }
//            if (flag) {
//                System.out.println(i);
//            }
//        }
//    }


//    //输出1000-2000之间的所有闰年
//    //闰年：year%400==0 ||(year%4==0 &&year%100!=0)
//    public static void main4(String[] args) {
//        for (int year = 1000; year <2000 ; year++) {
//            if (year%400==0 ||(year%4==0 &&year%100!=0)) {
//                System.out.println(year);
//            }
//        }
//    }

//    //输出乘发口诀表
//    public static void main5(String[] args) {
//        for (int i = 1; i <10 ; i++) {
//            for (int j = 1; j <=i ; j++) {
//                System.out.print(i+"*"+j+"="+i*j+" ");
//            }
//            System.out.println();
//        }
//    }


    //求出两个正数的最大公约数
    public static void main6(String[] args) {
        int a =36;
        int b = 24;
        int c = a % b;
        while(c != 0) {
            a = b;
            b = c;
            c = a % b;
        }
        System.out.println(b);
    }



//    //编写一个程序，计算1-100之间9出现的次数
//    public static void main7(String[] args) {
//        int count = 0;
//        for (int i = 1; i <=100 ; i++) {
//            if(i%10==9){
//                count++;
//            }
//            if(i/10==9){
//                count++;
//            }
//        }
//        System.out.println(count);
//    }


//    //计算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值
//    public static void main8(String[] args) {
//        double sum = 0.0;
//        int flag = 1;
//        for (int i = 1; i <=100 ; i++) {
//            sum+=1.0/i*flag;
//            flag = -flag;
//        }
//        System.out.println(sum);
//    }


    //打印X图形
//    public static void main9(String[] args) {
//        Scanner scanner = new Scanner(System.in);
//        System.out.print("请输入数字：");
//        int num = scanner.nextInt();
//        for (int i = 0; i <num ; i++) {
//            for (int j = 0; j <num ; j++) {
//                if(i==j || i+j==num-1) {
//                    System.out.print("*");
//
//                }else{
//                    System.out.print(" ");
//                }
//            }
//            System.out.println();
//        }
//    }


    //输出一个整数的每一位，如：123的每一位是3，2，1
    public static void main10(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入数字：");
        int num = scanner.nextInt();
        while(num != 0) {
            System.out.println(num % 10);
            num /= 10;
        }
    }

    //编写代码模拟三次密码输入的场景。 最多能输入三次密码，密码正确，提示“登录成功”,密码错误， 可以重新输 入，最多输入三次。三次均错，则提示退出程序
    public static void main11(String[] args) {
        int count = 3;
        Scanner scanner = new Scanner(System.in);
        while (count != 0) {
            System.out.println("你还有"+count+"次机会！");
            System.out.println("请输入密码：");
            String pass = scanner.nextLine();
            if (pass.equals("1234")) {
                System.out.println("登陆成功！");
                return;
            }else{
                count--;
            }
        }
    }

    //获取一个数二进制序列中所有的偶数位和奇数位， 分别输出二进制序列
    public static void main12(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入数字：");
        int num = scanner.nextInt();
        for (int i = 31; i >=1 ; i-=2) {
            System.out.print((num>>>i)&1);
        }
        System.out.println();
        for (int i = 30; i >=0 ; i-=2) {
            System.out.print((num>>>i)&1);
        }
    }


    //打印1-999999之间的水仙花数
    public static void main13(String[] args) {
        //计算水仙花数是几位数
        for (int i = 0; i <999999 ; i++) {
            int count = 0;
            int temp = i;
            while(temp != 0) {
                count++;
                temp/=10;
            }
            //求每一位上是几
            temp = i;
            int sum = 0;
            while(temp != 0) {
                sum += Math.pow(temp%10,count);
                temp /= 10;
            }
            if (sum == i){
                System.out.println(i);
            }
        }
    }


    //编写一个函数，检测输入的年份是否位闰年
    public static boolean isLeapYear(int year) {
        if (year%400==0 ||(year%4==0 &&year%100!=0)) {
            return true;
        }else{
            return false;
        }
    }
    public static void main14(String[] args) {
        System.out.println("请输入数字：");
        Scanner scanner = new Scanner(System.in);
        int year = scanner.nextInt();
        if (isLeapYear(year)) {
            System.out.println(year+"年是闰年");
        }else {
            System.out.println(year+"不年是闰年");
        }
    }


    //两数相加
//    public static  int add(int a,int b) {
//        System.out.println("调用方法中x = "+a+",y = "+b);
//        return a + b;
//    }
    public static void main15(String[] args) {
        int a = 10;
        int b = 20;
        int ret = add(a,b);
        System.out.println(ret);
    }


    //交换两个整型变量
//    public static void swap(int a, int b) {
//        int temp = 0;
//        temp = a;
//        a = b;
//        b = temp;
//        System.out.println("swap:a = "+a+",b = " + b);
//    }
//    public static void main16(String[] args) {
//        int a = 10;
//        int b = 20;
//        System.out.println("main:a = "+a+",b = " + b);
//        swap(a,b);
//    }



    //引用数据类型解决交换两值
    public static void swap(int[] arr) {
        int temp = arr[0];
        arr[0] = arr[1];
        arr[1] = temp;
    }
    public static void main17(String[] args) {
        int[] arr = {10,20};
        System.out.println("调用swap前：arr[0] = " + arr[0]+",arr[1] = " + arr[1]);
        swap(arr);
        System.out.println("调用swap前：arr[0] = " + arr[0]+",arr[1] = " + arr[1]);
    }


    //方法重载示例
    public static  int add(int a,int b) {
        System.out.println("调用方法中x = "+a+",y = "+b);
        return a + b;
    }
    public static  double add(double a,double b) {
        System.out.println("调用方法中x = "+a+",y = "+b);
        return a + b;
    }
    public static  double add(double a,double b,double c) {
        System.out.println("调用方法中x = "+a+",y = "+b);
        return a + b + c;
    }
    public static void main18(String[] args) {
        add(1,2);
        add(1.5,2.5);
        add(1.5,2.5,3.5);
    }

    //递归实现n的阶乘
    public static int fun(int n) {
        if(n == 1) {
            return 1;
        }else {
            return n*fun(n-1);
        }
    }
    public static void main19(String[] args) {
        System.out.println("请输入数字：");
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        int ret = fun(n);
        System.out.println(ret);

    }
    //递归按顺序打印一个数的每一位
    public static void print(int num){
        if (num>9)
            print(num/10);
        System.out.println(num%10);
    }
    public static void main20(String[] args) {
        int num = 1234;
        print(num);
    }


    //递归求1 + 2 + 3 + .....+ 10
    public static int sun(int num){
        if(num == 1)
            return 1;
        return num + sun(num-1);
    }

    //写一个递归方法，输入一个非负整数，返回组成它的数字之和
    public static int sum(int num){
        if (num<10)
            return num;
        return num%10 + sum(num/10);
    }
    public static void main(String[] args) {
        int num = 1234;
        int ret = sum(num);
        System.out.println(ret);
    }
}
